package com.sinosoft.sinopay.paytrade.facade;

import com.sinosoft.sinopay.paytrade.dto.PayTradeNotifyRecordDTO;
import com.sinosoft.sinopay.paytrade.dto.PaymentConfirmDTO;
import com.sinosoft.sinopay.paytrade.dto.PaymentRequestDTO;
import com.sinosoft.sinopay.paytrade.dto.PaymentTradeBatchDTO;
import com.sinosoft.sinopay.paytrade.dto.PaymentTradeReqDTO;
import com.sinosoft.sinopay.paytrade.dto.UserAuthConfInfo;

/**
 * 支付交易微服务接口类
 * @author chenxin
 * @version 1.0
 * @date 2016-11-4
 */
public interface PaymentTradeFacadeService {
	
	/**
	 * 用户授权确认 执行支付路由、支付规则、调用接口、更改相关返回值状态信息
	 * @param PayNo 订单号
	 * @return 前台回调URL信息等
	 */
	UserAuthConfInfo comfirmTradeRequest(String PayNo);
	
	/**  
	 * 处理支付请求交易
	 * @param cPayReqInfo支付请求信息类 订单信息
	 * @return 支付号码
	 */
	String newPayTrade(PaymentRequestDTO cPayReqInfo);
	/**
	 * 处理支付请求确认交易
	 * @param cPayConfirmInfo 支付请求确认信息类 修改订单状态
	 * @return 受影响行数
	 */
	int modifyTradeOrderStatus(PaymentConfirmDTO cPayConfirmInfo);
	
	/**
	 * 方法的功能描述：支付交易表支付信息 新增
	 * @param PaymentTradeReqDTO
	 * @return 成功返回 sid ,失败返回0
	 * 
	 */
	int addPaymentInfo(PaymentTradeReqDTO cPaymentTradeReqDTO);
	
	/**
	 * 方法的功能描述：根据批次号 或者订单号-修改支付交易表支付信息 
	 * @param cPaymentTradeReqDTO
	 * @return 受影响行数
	 */
	int modifyPaymentInfo(PaymentTradeReqDTO cPaymentTradeReqDTO);
	

	/** 
	 * 新增支付交易订单批次信息
	 * @param cPaymentTradeReqDTO 交易订单信息
	 * @return 添加成功返回：批次号，添加失败返回：false
	*/
	String addTransOrderBatchInfo(PaymentTradeReqDTO cPaymentTradeReqDTO);
		
	/**  
	 * 修改交易订单批次表
     * @param cPayReqInfo 交易订单信息
	 * @return 受影响行数
	*/
	int modifyTransOrderBatchInfo(PaymentTradeReqDTO cPaymentTradeReqDTO);
	

	/**   
	 * 新增批量支付信息
	 * @param cPaymentTradeBatchDTO 批量支付交易信息
	 * @return 受影响行数
	 */
	int addBulkPaymentInfo(PaymentTradeBatchDTO cPaymentTradeBatchDTO);
	/**  
	 * 根据支付批次号 - 修改批量支付信息
	 * @param cPaymentTradeBatchDTO 批量支付交易信息 
	 */
	int modifyBatchPaymentInfo(PaymentTradeBatchDTO cPaymentTradeBatchDTO);
	

	/**
	 * 新增报盘记录数据
	 * @param cPaymentTradeBatchDTO
	 * @return 受影响行数
	 */
	int addOfferRecordData(PaymentTradeBatchDTO cPaymentTradeBatchDTO);

	/**
	 * 根据支付批次号 -修改报盘记录数据
	 * @param cPaymentTradeBatchDTO  
	 * @return 受影响行数
	 */
	int modifyOfferRecordData(PaymentTradeBatchDTO cPaymentTradeBatchDTO);

	
	/**
	 * 新增交易支付关系
	 * @param cPaymentTradeReqDTO
	 * @return 受影响行数
	 */
	int addTransePayRelate(PaymentTradeReqDTO cPaymentTradeReqDTO);

	/**
	 * 根据支付批次ID - 修改支付关系表
	 * @param cPaymentTradeReqDTO
	 * @return 受影响行数
	 */
	int modifyTransePayRelate(PaymentTradeReqDTO cPaymentTradeReqDTO);
	
	
	/**  
	* 新增支付交易回调信息 
	* @param cPayTradeNotifyRecordDTO 支付交易回调记录表
	* @return  系统流水号
	*/
	int addPayTradeNotifyRecord(PayTradeNotifyRecordDTO cPayTradeNotifyRecordDTO);
	/**  
	* 修改支付交易回调信息
	* @param cPayTradeNotifyRecordDTO 支付交易回调记录表
	*/
	int modifyPayTradeNotifyRecord(PayTradeNotifyRecordDTO cPayTradeNotifyRecordDTO);		

	/**  
	* 支付交易回调记录日志表 数据新增  
	* @param cPayTradeNotifyRecordDTO 支付交易回调记录日志表
	*/
	int addPayTradeNotifyRecordLog(PayTradeNotifyRecordDTO cPayTradeNotifyRecordDTO);
	
	/**
     * 方法的功能描述：根据交易批次号 、账号、账号名、金额 -修改支付交易表 批量支付结果 信息 
     * @param cPaymentTradeReqDTO
     * @return 受影响行数
     */
    int modifyPaymentInfoForBatch(PaymentTradeReqDTO cPaymentTradeReqDTO);
    
}
